Complex software-development tasks may be automated by means of build agents, which are computer programs that automatically perform processor-intensive tasks necessary to build a software module. These tasks may include retrieving source files from a version-control system, provisioning a workspace, compiling code, running tests, or merging files back into version control.
Provisioning, launching, or running a build agent may consume significant system resources, so an automated project-build effort may run more efficiently if the number of agents is minimized or if an agent is not provisioned or launched until it is actually needed to perform a build.
Scheduling the provisioning of build agents is difficult in large projects in which complex build dependencies each require a first module to be completely built before a build agent can begin building a second module.
There is thus a need for a way to optimize automated software-building technology to solve the problem of efficiently scheduling the provisioning, launching, and running of build agents.